/**
 * Bestpay.com.cn Inc.
 * Copyright (c) 2011-2015 All Rights Reserved.
 */
package com.baofu.paycore.biz.engine.processor;

import com.baofu.paycore.biz.engine.command.Command;
import com.baofu.paycore.biz.engine.result.CommandResult;
import com.baofu.paycore.biz.enums.CommandProcessorEnum;

import java.util.List;
import java.util.Map;

/**
 * 命令执行结果
 * <p>
 *     1、获取处理器类型
 *     2、执行特定支付工具的特定支付类型的批量支付命令
 *     3、执行取消方法
 * </p>
 *
 * User: LZQ Date: 2016/04/22  Version: 1.0
 */
public interface BaseProcessor<T extends Command> {

    /**
     * 获取处理器类型
     * 
     * @return  命令处理器
     */
    CommandProcessorEnum getProcessorType();

    /**
    * 执行特定支付工具的特定支付类型的批量支付命令，并返回相应的结果
    * 
    * @param  command 支付命令
    * @return          指令执行结果
    */
    Map<String, CommandResult> doProcess(T command);

    /**
     * 执行取消方法
     *
     * @param  commands     支付命令
     * @return map          指令执行结果
     */
    Map<String, CommandResult> doCancel(List<T> commands);
}
